package org.oos.atom.impl;

import java.net.URL;
import java.util.List;

import org.oos.atom.AtomEntity;
import org.oos.atom.entries.OosEntry;

public interface AtomFeed<E extends AtomEntity> extends AtomEntity {

	/**
	 * @return The {@link URL} for the previous page or null if this page is the
	 *         first.
	 */
	public URL getPrevious();

	/**
	 * @return The {@link URL} for the next page or null if it is the last one
	 *         or there aren't any more pages.
	 */
	public URL getNext();

	/**
	 * @return A list of implementations of {@link OosEntry}
	 */
	public List<E> getEntries();

	/**
	 * @return the number of items in each page of the feed
	 * @see <a
	 *      href="http://atomserver.codehaus.org/docs/protocol_basics.html#paging">A
	 *      "paging" time-sensitive feed</a>
	 */
	public Integer getItemsPerPage();

	/**
	 * @return The total compound number of results from all the pages.
	 * @see <a
	 *      href="http://atomserver.codehaus.org/docs/protocol_basics.html#paging">A
	 *      "paging" time-sensitive feed</a>
	 */
	public Integer getTotalResults();

	/**
	 * @return The id for the first item in the page.
	 * @see <a
	 *      href="http://atomserver.codehaus.org/docs/protocol_basics.html#paging">A
	 *      "paging" time-sensitive feed</a>
	 */
	public Integer getStartIndex();
	
	public String getUpdated();

}
